package com.github.cyf.poitl;

import com.deepoove.poi.data.TextRenderData;
import com.deepoove.poi.data.Texts;

import java.util.ArrayList;
import java.util.List;

/**
 * 用于构建不同格式的长文本
 * 模板文件中对应位置需要为：{{?val}}{{=#this}}{{/val}}，val为数据模型中的 key
 * 参考：https://deepoove.com/poi-tl/#_%E5%8C%BA%E5%9D%97%E5%AF%B9
 * @author chenyifan
 * @create 2024-11-18 16:13
 */
public class PoiTlTextBuilder {

    private List<Object> textList;

    public PoiTlTextBuilder() {
        this.textList = new ArrayList<>();
    }

    public List<Object> getTextList() {
        return textList;
    }

    /**
     * 添加文本
     * @param text
     * @return
     */
    public PoiTlTextBuilder append(String text) {
        textList.add(Texts.of(text).create());
        return this;
    }

    /**
     * 添加文本，附带样式
     * @param textRenderData
     * @return
     */
    public PoiTlTextBuilder append(TextRenderData textRenderData) {
        textList.add(textRenderData);
        return this;
    }

    /**
     * 添加下标
     * @param subText
     */
    public PoiTlTextBuilder appendSub(String subText) {
        textList.add(Texts.of(subText).sub().create());
        return this;
    }

    /**
     * 添加上标
     * @param supText
     */
    public PoiTlTextBuilder appendSup(String supText) {
        textList.add(Texts.of(supText).sup().create());
        return this;
    }

}
